struct Container[T1, T2] {
  value : T1
}

fn transform[A, B](x : A) -> B {
  // ... implementation
}